// $(function () {
var example = {
    base_url: '/tlgl/spring/',
    isLongmen: location.href.indexOf('longmen') !== -1,
    isSharePage: location.href.indexOf('share') !== -1 || location.href.indexOf('gift') !== -1,
    initParam: { // 初始化参数
        app: 'tlgl',
        activity: 'spring',
        version: '20250902',
        platform: 'wgchangyou'
    },
    errorMsg: { // 通用的错误码提示文案
        1102: '活动无效',
        1106: '活动未开始',
        1103: '活动已结束'
    },
    levelLow: false,
    /** 签到天数 */
    signDays: null,
    /**
     * 是否在签到/出游阶段
     * 未开始-1 进行中1 已结束0
     */
    isSignStage: undefined,
    /** 是否正在播放动画 */
    isAnimatePlaying: false,
    /** 今日是否已出游 */
    hasWish: false,
    /** 已出游次数 */
    wishCount: 0,
    /** 今日是否已签到 */
    hasSign: false,
    /** 已签到次数 */
    totalCount: 0,
    init: function () {
        /* 初始化  config配置项详见 表 3.1 */
        ja.config({
            app: this.initParam.app, // 必填，应用标识
            activity: this.initParam.activity, // 必填，活动标识
            version: this.initParam.version + (example.isLongmen ? '01' : ''), // 必填，活动版本标识
            platform: this.initParam.platform, // 必填，登陆平台标识
            isWxLogin: true,
            isWxStatus: true,
            isAutoWxLogin: false,
            isWxOnly: true
        });

        // logDebug依赖阿里云错误日志上报js
        $.ajaxSetup({
            async: false,
            error: function (jqXHR) {
                if (this.url.indexOf(location.hostname) != -1) {
                    alert('系统异常，请稍后再试！');
                    logDebug.error({
                        activity: example.initParam.activity,
                        message: [
                            'title：' + '全局ajax请求Error处理',
                            'Request URL：' + this.url,
                            'Request Method：' + this.type,
                            'header：' + JSON.stringify(this.headers),
                            'Status Code：' + jqXHR.status + jqXHR.statusText,
                            'data：' + this.data
                        ].join('\n')
                    })
                }
            }
        })
        window.onerror = function (message, source, lineno, colno, error) {
            logDebug.error({
                activity: example.initParam.activity,
                message: [
                    'title：' + 'window.onerror',
                    'errorMessage：' + message + '----in：' + source + '：' + lineno + '：' + colno
                ].join('\n')
            })
        }

        /*  初始化完成后执行函数 返回全局对象 glob,详见 表 3.2 */
        ja.ready(function (glob) {
            if (example.isSharePage) {
                example.shareID = ja.params['id'];
                if (example.shareID) {
                    example.shareInfo(example.shareID);
                } else {
                    location.href = './index.shtml';
                }

            } else {
                example.share()
            }
            glob.isLogin ? example.loginAfter() : example.loginBefore();
        });

        /* 龙门标志跟提示 */
        if (example.isLongmen) {
            ja.longmen({
                top: '50%',
                left: '0',
            })

            alert('此活动为龙门测试版本，奖品均发放到龙门服')
        };

        // 登录按钮
        $('#login').on('click', function () {
            example.commHandle()
        })

        // 二选一登录 畅游平台登录
        $('#cyLogin').on('click', function () {
            ja.login({ w2c: true })
        })

        // 二选一登录 微信登录
        $('#wgLogin').click(function () {
            ja.login()
        })

        // 注销
        $('#logout').on('click', function () {
            ja.logout()
        })

        // 七日签到页按钮
        $('.btn-sign').on('click', function () {
            if (example.isAnimatePlaying) return;

            if (example.commHandle()) return;

            example.statusStore.set('daily');
            $('.btn-sign').removeClass('show-red');
            example.signInfo()
            if(window.location.href.split('?')[0].endsWith('share.shtml')){
                location.href = './index.shtml';
             }else{
            showPage('.page-sign', !$(this).hasClass('home') && '.page-wish');
             }
        })

        // 立即签到按钮
        $('.page-sign .sign-btn').on('click', function () {
            if (example.isSignStage < 1) return example.stageHandle('签到');

            if (example.hasSign) {
                example.tips('今日已签到，请少侠明日再来吧~');
            } else if (example.totalCount >= example.signDays) {
                example.tips('您已完成七日签到');
            } else {
                example.sign();
            }
        })

        // 开始出游按钮
        $('.page-wish .wish-btn').on('click', function () {
            if (example.isAnimatePlaying) return;

            if (example.isSignStage < 1) return example.stageHandle('出游');

            if (example.hasWish) return example.tips('今日已出游，请少侠明日再来吧~');
                example.wish();
            // $('.outgoing-pop .item').removeClass('sel')
            // popShow('.outgoing-pop');

        })

        // 确认出游
        $('.outgoing-pop .confirm').on('click', function () {
            // if (!$('.outgoing-pop .item.sel').length) return example.tips('请选择出游物品！');
            // if (!$('.outgoing-pop .item.sel').length || !$('.pet-box .item.sel').length || !$('.view-box .item.sel').length) return example.tips('请分别选择【出游目的地】和【携带珍兽】');
            example.wish();
        })

        // 首页参与活动按钮
        $('.page-home .btn-join').on('click', function () {
            if (example.commHandle()) return;

            example.userInit();
            showPage('.page-wish');
        })

        // 图鉴收集按钮
        $('.btn-collect').on('click', function () {
            if (example.isAnimatePlaying) return;

            if (example.commHandle()) return;
           if(window.location.href.split('?')[0].endsWith('share.shtml')){
                location.href = './index.shtml';
             }else{
           showPage('.page-xnzf', !$(this).hasClass('home') && '.page-wish');
             }

            example.myProps();
        })

        // 个人中心
        $('.usercenter').on('click', function () {
            if (example.commHandle()) return;

            example.userCenter()
        })

        // 右侧领取奖励按钮
        $('.btn-lqjl').on('click', function () {
            if (example.isAnimatePlaying) return;

            example.userInit();
            example.myProps();
            popShow('.yjlq-pop')
        })

        // 右侧好运锦鲤按钮
        $('.btn-hyjl').on('click', function () {
            if (example.isAnimatePlaying) return;

            example.winLotList();
            $('.btn-hyjl').removeClass('shake-btn');
            example.statusStore.set('daily');

            showPage('.page-jl', $(this).attr('data-parent'));
        })

        // 分享道具通用操作
        $('.share').on('click', function () {
            example.myProps(function () {
                popShow('.give-wish-pop');
            });
            $('#shareBtn').attr('data-type', $(this).index());
        })

        // 分享按钮
        $('#shareBtn').on('click', function () {
            if (!$('.wish-box .sel').length) return popAlert('请先选择要赠予的图鉴');

            var shareType = $(this).attr('data-type');
            example.shareProp($('.wish-box .sel').attr('data-type'), function (shareID, itemID) {
                shareHandler(shareType, shareID, itemID);
            })
        })

        // 落地分享页接受图鉴按钮
        $('.page-receive .receive-btn').on('click', function () {
            if (example.commHandle()) return;
            if (example.isSignStage < 1) return example.stageHandle('赠送');

            example.receiveProp(example.shareID);
        })
    },
    /** 登录后 */
    loginAfter: function () {
        $('#login').hide()
        $('.user_name').text(ja.userInfo.nickname || ja.userInfo.openid).show() // wgchangyou二选一
        $('#logout').show()
        $('.usercenter').show()
        example.userInit()
    },
    /** 登录前 */
    loginBefore: function () {
        if (ja.isWechat) {
            // 点击过授权的就直接拉起登录弹窗
            if (sessionStorage.getItem(example.initParam.activity + example.initParam.version + 'wLogin')) {
                ja.isWLogin && popShow('.login-pop')
                sessionStorage.removeItem(example.initParam.activity + example.initParam.version + 'wLogin')
            }
        }
    },
    /**
    * 通用错误码处理
    * @param {*} data 返回的对象
    */
    commonErrPop: function (data, str) {
        var flag = true;
        switch (parseInt(data.code)) {
            case 1202: case 1209: case 1207: case 1007: //1202请求参数缺失或者为空  1209操作频繁
                example.tips('系统繁忙，请稍后重试！');
                break;
            case 1019: case 1012:
                ja.isLogin = false; // 重置下ja的登录状态标识以触发登录操作
                $('#login').click();
                break;
            case 1102:
                ja.code = 1102;
                example.tips(example.errorMsg[1102]);
                break;
            case 1106:
                ja.code = 1106;
                example.tips(example.errorMsg[1106]);
                break;
            case 1103:
                ja.code = 1103;
                example.tips(example.errorMsg[1103]);
                break;
            case 1104:
                example.tips((str || '') + '阶段未开始');
                break;
            case 1105:
                example.tips((str || '') + '阶段已结束');
                break;
            case 3103:
                example.tips('账号已封停！');
                break;
            case 2131:
                example.tips('由于账号中的角色<30级，无法参与活动，请先升级再参与活动');
                example.levelLow = true;
                break;
            case 0:
                example.tips('系统异常，请刷新后重试~');
                break;
            default:
                flag = false;
                break;
        }
        return flag;
    },
    /**
    * 通用的前置处理方法
    */
    commHandle: function () {
        var flag = true;
        if (!ja.isWechat) {
            alert('请在微信中访问本活动！');
        } else if (ja.code == 1102) {
            example.tips(example.errorMsg[1102]);
        } else if (ja.code == 1106) {
            example.tips(example.errorMsg[1106]);
        } else if (ja.code == 1103) {
            example.tips(example.errorMsg[1103]);
        } else if (!ja.isLogin) {
            // 微信绑定登录，需要先判断是否拉取过授权
            if (ja.isWechat) {
                if (!ja.isWLogin) { // 未授权
                    ja.login('wechat'); // 拉起授权
                    sessionStorage.setItem(example.initParam.activity + example.initParam.version + 'wLogin', '1');
                } else {
                    popShow('.login-pop')
                }
            } else {
                ja.login({ w2c: true }); // 直接拉起畅游登录
            }
        } else if (example.levelLow) {
            example.tips('由于账号中的角色<30级，无法参与活动，请先升级再参与活动');
        } else {
            flag = false;
        }
        return flag;
    },
    /**
     * 阶段开关提示
     * @param {*} str
     */
    stageHandle: function (str) {
        switch (example.isSignStage) {
            case -1:
                example.tips((str || '') + '阶段未开始');
                break;
            case 0:
                example.tips((str || '') + '阶段已结束');
                break;
        }
    },
    /**
    * 通用提示
    */
    tips: function (msg) {
        popAlert(msg)
    },
    /**
    * 单向绑定 方便数据驱动视图的更新
    * @description 监听属性修改 set修改 get读取
    * @param {String} attr 属性名
    * @param {object} set 设置数据时触发的操作
    * @param {object} get 获取数据时触发的操作
    * @example
    * new example.dataObserver('param', function (val) {
    *	$('element').text(val);
    * })
    */
    dataObserver: function (attr, set, get) {
        var _value = example[attr];
        Object.defineProperty(example, attr, {
            get: function () {
                get && get(_value);
                return _value;
            },
            set: function (val) {
                set && set(val);
                _value = val;
            }
        })
        example[attr] = _value;
    },
    /**
     * 格式化时间
     * @param {*} timestamp
     * @returns
     */
    formatDateTime: function (timestamp) {
        function getTwo(n) {
            n = n.toString();
            return n[1] ? n : "0" + n;
        }
        timestamp = timestamp ? new Date(timestamp) : new Date();
        var year = timestamp.getFullYear();
        var month = timestamp.getMonth() + 1;
        var date = timestamp.getDate();
        var hour = timestamp.getHours();
        var minute = timestamp.getMinutes();
        var second = timestamp.getSeconds();
        return year + "年" + getTwo(month) + "月" + getTwo(date) + "日 " + getTwo(hour) + ":" + getTwo(minute) + ":" + getTwo(second);
    },
    /**
     * 状态存储
     * @returns {Boolean} true 已经访问 false 未访问
     */
    statusStore: {
        set: function (name) {
            var name = example.initParam.activity + '_' + example.initParam.version + '_' + ja.userInfo.openid + '_' + name;

            localStorage.setItem(name, new Date().toLocaleDateString());
        },
        get: function (name) {
            return localStorage.getItem(name);
        },
        /** 当日是否访问过 */
        visited: function (name) {
            var name = example.initParam.activity + '_' + example.initParam.version + '_' + ja.userInfo.openid + '_' + name;

            var temp = this.get(name);
            var date = new Date().toLocaleDateString();

            return temp === date;
        }
    },
    /**
    * 用户初始化
    */
    userInit: function () {
        $.ajax({
            type: 'POST',
            url: example.base_url + 'userInit',
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res)) return;

                if (res.code == 10000) {
                    var data = res.data;

                    example.signDays = data.signDayNum;

                    /**  每日签到奖领取状态 */
                    var daily = data.prizeStatus.split('#')[0],
                        dailyTemp;
                    daily.split('').forEach(function (v, i) {
                        dailyTemp = !parseInt(v);
                    })
                    dailyTemp && !example.statusStore.visited('daily') && $('.btn-sign').addClass('show-red');

                    /** 图鉴收集奖励领取状态 */
                    var collect = data.prizeStatus.split('#')[1];
                    collect.split('').forEach(function (v, i) {
                        if (parseInt(v)) {
                            $('.prize-list .item').eq(i).addClass('got');
                            $('.process-bar .dot').eq(i).addClass('got');
                        }
                    })

                    /**
                     *  未开始-1 进行中1 已结束0
                     */
                    data.currDate = new Date(data.currDate.replace(/-/g, '/')).getTime();
                    if (data.currDate < data.stageStart) {
                        example.isSignStage = -1;
                    } else if (data.currDate >= data.stageEnd) {
                        example.isSignStage = 0;
                    } else {
                        example.isSignStage = 1;
                    }

                    // 抽奖码按钮跳动效果
                    data.lotCode && !example.statusStore.visited('lot') && $('.btn-hyjl').addClass('shake-btn');

                    // 出游按钮缩放效果 置灰效果
                    (data.toDayIsWish || data.wishDays >= example.signDays) && $('.wish-btn').removeClass('scale').addClass('gray');
                    !data.toDayIsWish && data.wishDays < example.signDays && $('.wish-btn').removeClass('gray').addClass('scale');
                    example.hasWish = data.toDayIsWish;
                    example.wishCount = data.wishDays;
                } else {
                    switch (parseInt(res.code)) {
                        // case 5111:
                        //     example.tips('创建队伍失败，请刷新页面后重试');
                        //     break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 签到信息
     */
    signInfo: function () {
        $.ajax({
            type: 'GET',
            url: example.base_url + 'signInfo',
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res, '签到')) return;

                if (res.code == 10000) {
                    var data = res.data;

                    $('#dailyList .item:lt(' + data.totalCount + ')').addClass('on');
                    example.totalCount = data.totalCount;

                    example.hasSign = data.hasSign;

                    if (data.totalCount >= example.signDays) {
                        $('.sign-btn').removeClass('signed').addClass('gray')
                    } else if (data.hasSign) {
                        $('.sign-btn').removeClass('gray').addClass('signed')
                    } else {
                        $('.sign-btn').removeClass('gray signed')
                    }

                } else {
                    switch (parseInt(res.code)) {
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 签到
     */
    sign: function () {
        $.ajax({
            type: 'POST',
            url: example.base_url + 'sign',
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res, '签到')) return;

                if (res.code == 10000) {

                    example.signInfo()

                    $('.sign-pop .prize_box').html($('#dailyList .item').eq(example.totalCount - 1).children().clone())
                    popShow('.sign-pop');

                } else {
                    switch (parseInt(res.code)) {
                        case 3200:
                            example.tips('今日已签到，请少侠明日再来吧~');
                            break;
                        case 5085:
                            example.tips('您已完成七日签到');
                            break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 出游
     */
    wish: function () {
        $.ajax({
            type: 'POST',
            url: example.base_url + 'wish',
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res, '出游')) return;

                if (res.code == 10000) {
                    var data = res.data;

                    // 填充获取奖励信息
                    wishSuccData = {
                        icon: zfJson[data.itemId].poster,
                        name: zfJson[data.itemId].name
                    }
                    console.log(data, wishSuccData);
                    popShow('.outing-pop');
                    runOuting();

                    example.userInit();

                } else {
                    switch (parseInt(res.code)) {
                        case 3200:
                            example.tips('今日已出游，请少侠明日再来吧~');
                            break;
                        case 5085:
                            example.tips('少侠出游次数已达上限，未收集的图鉴可向好友索要。');
                            break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 我的道具
     */
    myProps: function (cb) {
        $.ajax({
            type: 'GET',
            url: example.base_url + 'myProps',
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res)) return;

                if (res.code == 10000) {
                    var data = res.data,
                        typeCounts = 0;
                    $('.give-wish-pop .wish-box').empty();
                    $.each(data, function (i, v) {
                        var box = $('.wish-box .item').eq(i - 1);
                        if (v) {
                            box.addClass('on').find('.num').text('x' + v);
                            var clone = box.clone();
                            clone.find('.dark').remove();
                            clone.attr('data-type', i)
                            $('.give-wish-pop .wish-box').append(clone);
                            typeCounts++;
                        }
                    })
                    $('#typeCounts').text(typeCounts);

                    cb && cb()
                } else {
                    switch (parseInt(res.code)) {
                        // case 5085:
                        //     example.tips('您已完成七日签到');
                        //     break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 个人中心
     */
    userCenter: function () {
        $.ajax({
            type: 'GET',
            url: example.base_url + 'userCenter',
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res)) return;

                if (res.code == 10000) {
                    var data = res.data;

                    $('.sign-body .row-1:lt(' + data.signDays + ')').addClass('tick');
                    $('.sign-body .row-2:lt(' + data.wishDays + ')').addClass('tick');

                    var list = '';
                    $.each(data.prizeList, function (i, v) {
                        list += '<div class="item item-1">' +
                            '<div class="name">' + v.remark.replace('#', '') + '</div>' +
                            '<div class="date">' + ja.formatDate(v.createTime) + '</div></div>';
                    })
                    $('.prize-body').html(list);

                    popShow('.usercenter-pop');
                } else {
                    switch (parseInt(res.code)) {
                        // case 5085:
                        //     example.tips('您已完成七日签到');
                        //     break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 抽奖信息
     */
    winLotList: function () {
        $.ajax({
            type: 'GET',
            url: example.base_url + 'winLotList',
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res)) return;

                if (res.code == 10000) {
                    var data = res.data;

                    data.myLotCode && $('#myLotCode').text(data.myLotCode)
                    // data.winLotList && data.winLotList.length && $('#rightCode').html(data.winLotList.join('<br>'));
                    data.winLotList && data.winLotList.length && $('#rightCode').html(data.winLotList[0]);
                    setTimeout(fitFontSize);

                    $('#lotTime').text(example.formatDateTime(data.openPrizeDate) + '开奖')
                } else {
                    switch (parseInt(res.code)) {
                        // case 5085:
                        //     example.tips('您已完成七日签到');
                        //     break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 分享道具
     * @param {*} id
     */
    shareProp: function (id, cb) {
        $.ajax({
            type: 'POST',
            url: example.base_url + 'shareProp',
            data: {
                'itemId': id
            },
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res, '赠送')) return;

                if (res.code == 10000) {
                    var data = res.data;

                    cb && cb(data, id)
                } else {
                    switch (parseInt(res.code)) {
                        case 1001:
                            example.tips('道具数量不足~');
                            example.myProps();
                            break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 分享信息查询
     * @param {string} id
     */
    shareInfo: function (id) {
        $.ajax({
            type: 'GET',
            url: example.base_url + 'shareInfo',
            data: {
                'shareId': id
            },
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res)) return;

                if (res.code == 10000) {
                    var data = res.data;

                    $('#shareName').text(data.nickName)
                    $('#shareCard').attr('src', zfJson[data.itemId].card)
                    $('#shareCount').text(data.itemNum)
                    example.share(example.shareID, data.itemId);

                } else {
                    switch (parseInt(res.code)) {
                        case 5014:
                            example.tips('分享链接已失效~');
                            break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 领取赠送的道具
     * @param {*} id
     */
    receiveProp: function (id) {
        $.ajax({
            type: 'POST',
            url: example.base_url + 'receiveProp',
            data: {
                'shareId': id
            },
            success: function (res) {
                // 前置过滤器 处理通用错误码
                if (example.commonErrPop(res, '赠送')) return;

                if (res.code == 10000) {
                    var data = res.data;

                    popShow('.lqcg-pop');
                    example.shareInfo(id);
                } else {
                    switch (parseInt(res.code)) {
                        case 5014:
                            example.tips('分享链接已失效~');
                            break;
                        case 5006:
                            example.tips('少侠领取图鉴已达今日上限，请明日再来吧~');
                            break;
                        case 5011:
                            example.tips('不能领取自己送出的图鉴~');
                            break;
                        case 1024:
                            example.tips('您已拥有该图鉴了，无法再从好友处重复获得。');
                            break;
                        case 5005:
                            example.tips('图鉴已被其他人领取~');
                            break;
                        case 5013:
                            example.tips('请重新尝试领取~');
                            break;
                        default:
                            example.tips(res.message);
                            break;
                    }
                }
            }
        })
    },
    /**
     * 分享
     * @param {*} id 分享id
     * @param {*} itemId 道具类型
     * @param {*} onlyLink 是否只需要链接
     * @returns
     */
    share: function (id, itemId, onlyLink) {
        if (id && itemId) {
            var link = location.origin + location.pathname.replace(/index|gift/g, 'share') + '?id=' + id;
            if (onlyLink) {
                return link;
            }
                // title: '好友' + ja.wechatInfo.nickname + '赠送你' + zfJson[itemId].name,//分享标题
            ja.share({
                link: link,//分享链接
                title: '好友赠送你' + zfJson[itemId].name,//分享标题
                desc: '十一签到送海量好礼，参与就送3级秘银棉布，3级红宝石。还有机会获得天马坐骑，点击即可参与>>>',//分享介绍
                imgUrl: window.location.origin+zfJson[itemId].poster,//分享 icon
                success: function () {
                    !example.isSharePage && example.share();
                    ja.shareLog('2')
                }
            })
        } else {
            ja.share({
                link: location.origin + location.pathname,//分享链接
                title: '3级秘银棉布免费送',//分享标题
                desc: '十一签到送海量好礼，参与就送3级秘银棉布，3级红宝石。还有机会获得天马坐骑，点击即可参与>>>',//分享介绍
                imgUrl: window.location.origin+'/act/tlhj/qxl/20250919/m/img/home_prize_1.png',//分享 icon
                success: function () {
                    //分享成功回调
                    ja.shareLog('1');
                }
            })
        }
    },
}

example.init()
// })
